package org.example.spring.ioc.config;

import org.example.spring.ioc.bean.Car;
import org.example.spring.ioc.bean.Person;
import org.example.spring.ioc.condition.MacCondition;
import org.example.spring.ioc.condition.WindowsCondition;
import org.springframework.context.annotation.*;

@Configuration
public class PersonConfig {
    /**
     * @Scope:调整组件的作用域
     * 1.@Scope("prototype")，非单实例
     * 2.@Scope("singleton")，单实例
     * 3.@Scope("request")， 同一个请求单实例
     * 4.@Scope("session")， 同一个会话单实例
     *
     */

    //判断当前操作系统是Windows系统还是Mac系统
    //如果是Windows，容器中有bill
    //如果是Mac，容器中有jobs
    @Conditional(WindowsCondition.class)
    @Bean("bill")
    public Person bill(){
        Person person = new Person();
        person.setName("比尔盖茨");
        person.setAge(50);
        person.setGender("男");
        return person;
    }
    @Conditional(MacCondition.class)
    @Bean("jobs")
    public Person jobs(){
        Person person = new Person();
        person.setName("乔布斯");
        person.setAge(40);
        person.setGender("女");
        return person;
    }





    //3.给容器中注册一个自己的组件,容器中的每一个组件都有自己的名字，这个名字默认是方法名。

    @Scope("prototype")
    @Bean("zhangsan")
    public Person person(){
        Person person = new Person();
        person.setName("张三");
        person.setAge(20);
        person.setGender("男");
        return person;
    }
    @Bean("lisi")
    public Person lisi(){
        Person person = new Person();
        person.setName("李四");
        person.setAge(20);
        person.setGender("男");
        return person;
    }
}
